<?php

/** 
 * @author felipe
 * 
 * 
 */
class App_Model_Db_Pessoa extends Voitech_Db{
	protected $_name = 'pessoa';
	protected $_primary = 'co_pessoa';
	
	static private $instancia;

	/**
	 * @return App_Model_Db_Pessoa
	 */
	static public function build() {
            if( !isset( self::$instancia ) ) {
                $classe = __CLASS__;
                self::$instancia = new $classe();
            }
            return self::$instancia;
	}
        
        public function buscarId($co_pessoa) {            
            $obSelect = $this->getAdapter()->select()
                                           ->from(array('pessoa'=>'pessoa'))
                                           ->where('pessoa.co_pessoa =?',$co_pessoa);
            return $this->getAdapter()->fetchRow($obSelect);
        }
	
	public function listarTodos(Voitech_TO $obTO=null){
            $obSelect = $this->select()
            				 ->from(array('pessoa'=>'pessoa'),
            				 		array('*',
                          				  'excluir' => '(CASE 
														  	WHEN (SELECT count(*) FROM usuario WHERE pessoa.co_pessoa = usuario.co_pessoa) > 0 THEN
														    	\'N\'
														    WHEN (SELECT count(*) FROM unidade WHERE pessoa.co_pessoa = unidade.co_responsavel)> 0 THEN
														    	\'N\'
														    WHEN (SELECT count(*) FROM fornecedor WHERE pessoa.co_pessoa = fornecedor.co_representante)> 0 THEN
														    	\'N\'            
														    WHEN (SELECT count(*) FROM distribuicao WHERE pessoa.co_pessoa = distribuicao.co_pessoa)> 0 THEN
														    	\'N\' 
														    WHEN (SELECT count(*) FROM compra WHERE pessoa.co_pessoa = compra.co_pessoa)> 0 THEN
														    	\'N\'
														    ELSE
														    	\'S\'
														  END)'));


            if( !empty( $obTO->co_pessoa ) ) {
                $obSelect->where('pessoa.co_pessoa =?', $obTO->co_pessoa);
            }
            if( !empty( $obTO->no_pessoa ) ) {
                $obSelect->where('pessoa.no_pessoa like ?', "%".$obTO->no_pessoa."%");
            }
            if( !empty( $obTO->nu_cpf ) ) {
                $obSelect->where('pessoa.nu_cpf =?', $obTO->nu_cpf);
            }
            if( !empty( $obTO->st_ativo ) ) {
                $obSelect->where('pessoa.st_ativo =?', $obTO->st_ativo);
            }
            $obSelect->order('pessoa.no_pessoa');
            return $this->getAdapter()->fetchAll($obSelect);			   						   
	}
}